Global Navigation Satellite System (GNSS) receivers enable the accurate determination of user position by performing measurements on radio signals transmitted by at least four GNSS satellites. The distance to each satellite is determined by first measuring the time it takes for the radio signal to travel from the satellite to the receiver and then, converting this travel time into a corresponding “line-of-sight” distance by multiplying it with the speed of light.
Ranging measurements performed on the pseudorandom noise (PRN) code modulated onto the satellite signal's radio frequency (RF) carrier (hereafter carrier) are known as pseudorange measurements and can achieve positioning accuracy in the region of metres if biases and error sources are appropriately taken into account. However pseudorange measurements suffer from degraded accuracy and reliability in challenging multipath environments.
Performing ranging measurements on the carrier of the satellite signal rather than on its modulation offers greater robustness to multipath. These measurements, known as carrier phase or carrier range measurements can also be made more precisely and can thus achieve centimetre positioning accuracy if biases and errors are correctly accounted for. Errors in the GNSS receiver time can be removed by differencing between satellites whereas errors in the initial satellite phase offset can be removed by differencing between two receivers, i.e. the GNSS receiver and another GNSS receiver, e.g. a reference ground station.
Some GNSS receivers employ both pseudorange and carrier range measurements to provide redundancy and increase the number of observations for use in position calculations. In contrast to pseudorange measurements, carrier range measurements introduce an ambiguity into the ranging measurement. The periodic nature of the transmitted carrier frequency creates an integer ambiguity in the number of cycles between the satellite transmitting the signal and the GNSS receiver, where each cycle of a signal represents the distance travelled in one wavelength of the signal.
This carrier range ambiguity arises because the GNSS receiver typically aligns a locally generated carrier signal with the incoming intercepted carrier signal to determine the carrier phase offset and this process provides no information on the whole number of signal cycles which have transpired since the signal was transmitted by the satellite. In order to use the carrier phase measurements made by the GNSS receiver as true ranging information, the unknown ambiguity first needs to be determined for each received satellite signal.
One known method for resolving these ambiguities entails the use of, what has justifiably been referred to as “navigation's integration workhorse” (L. J. Levy, GPS World, September 1977), a Kalman filter to estimate the ambiguities. Since Kalman filters are nowadays anyway frequently used in GNSS receivers to provide the navigation solution, they are the optimal approach for resolving the carrier range ambiguities. The Kalman filter employs differences in the pseudorange and carrier phase double difference measurements in addition to changing GNSS receiver-satellite geometry to build up position information which can be subsequently used to converge on the ambiguities. Rather than using double differencing, it is also possible to use single “differenced” measurements in the Kalman filter and estimate the receiver hardware delays.
Using a Kalman filter to estimate the carrier range ambiguities in this way requires implementing a separate Kalman filter state for each observed carrier range and consequently greatly increases the dimensions of the Kalman filter matrices which in turn increases non-linearly the computational cost of the Kalman filter algorithms. For example, modifying a typical navigation Kalman filter to include estimating the carrier range ambiguities would increase the number of states in the Kalman filter from 8 (3 position states, 3 velocity states and 2 clock states) to 8+2*C*M, where C is the number of dual-frequency GNSS constellations; and M represents the number of visible satellite signals per constellation observable at any given time. Even in the case where only 5 satellites/constellation are visible at any one time and the GNSS receiver is capable of tracking just two GNSS constellations (e.g. GPS and GLONASS), the number of states required in the Kalman filter increases from 8 states to 28 states. This poses problems for implementation on GNSS receivers with constrained processing resources.
It would be desirable to provide a computationally efficient Kalman filter for resolving carrier range ambiguities in resource constrained GNSS receivers.